/*
更新日期：2017、01、20
作者：盛彬
备注信息：
avframepp 封装avframe为C++风格
针对原始的ffmpeg中frame做本地化升级和适应  avframepp应该更适应video intelligent parser程序的需要

得，内存我放手不管了吧···只对付parser的内存好了
*/
#pragma once
#include "AllHeader.hpp"
#include "libLog.hpp"

#ifndef AVFramePP_H
#define AVFramePP_H

class AVFramePP :public libLog
{
public:
    AVFramePP(); //构造函数有需求再加
    ~AVFramePP();
    //帧初始化函数
    int InitSetFrame(enum AVPixelFormat pix_fmt, int width, int height, uint8_t* buffer, int buffer_size);//使用外部内存空间 手动设置好buffer 逻辑基本只能处理bgr24这种结构
    //
    int Copy(AVFrame *_frame); //帧结构和内存分布需要一致 安全起见 该函数需要验证鲁棒性如何 若有偏差兼容问题，再增加运行条件判断和预处理
public:
    AVFrame *frame{ nullptr };
    int64_t frame_index{ 0 }; //one 2 one
private:
    int VideoCopy(AVFrame *_frame);
    int AudioCopy(AVFrame *_frame);
};

#endif // !AVFramePP_H
